package com.allen.study.infrastructure.persistence.assembler;

import com.allen.study.application.api.response.SysRoleQueryResponse;
import com.allen.study.domain.entity.SysRole;
import com.allen.study.infrastructure.persistence.assembler.mapper.ISysRolePOStructMapper;
import com.allen.study.infrastructure.persistence.po.SysRolePO;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * 角色表类型转换
 *
 * @author AllenSun
 * @since 2025-04-23 20:46
 */
@Component
public class SysRolePOAssembler {

    /**
     * 角色表持久化对象装配
     *
     * @param sysRole 角色表实体
     * @return 角色表持久化对象
     */
    public SysRolePO assembler(SysRole sysRole) {
        return ISysRolePOStructMapper.INSTANCE.fromEntity(sysRole);
    }

    /**
     * 角色表持久化对象装配
     *
     * @param sysRoleList 角色表实体
     * @return 角色表持久化对象
     */
    public List<SysRolePO> assembler(List<SysRole> sysRoleList) {
        return ISysRolePOStructMapper.INSTANCE.fromEntity(sysRoleList);
    }

    /**
     * 角色表持久化对象 转 角色表实体
     *
     * @param sysRolePO 角色表持久化对象
     * @return 角色表实体
     */
    public SysRole toEntity(SysRolePO sysRolePO) {
        return ISysRolePOStructMapper.INSTANCE.toEntity(sysRolePO);
    }

    /**
     * 角色表持久化对象列表  转 角色表实体列表
     *
     * @param sysRolePOList 角色表持久化对象
     * @return 角色表实体
     */
    public List<SysRole> toEntity(List<SysRolePO> sysRolePOList) {
        return ISysRolePOStructMapper.INSTANCE.toEntity(sysRolePOList);
    }

    /**
     * 角色表持久化对象 转 角色表查询响应数据传输对象
     *
     * @param sysRolePO 角色表持久化对象
     * @return 角色表查询响应数据传输对象
     */
    public SysRoleQueryResponse toQueryResponse(SysRolePO sysRolePO) {
        return ISysRolePOStructMapper.INSTANCE.toQueryResponse(sysRolePO);
    }

    /**
     * 角色表持久化对象列表 转 角色表查询响应数据传输对象列表
     *
     * @param sysRolePOList 角色表持久化对象列表
     * @return 角色表查询响应数据传输对象列表
     */
    public List<SysRoleQueryResponse> toQueryResponse(List<SysRolePO> sysRolePOList) {
        return ISysRolePOStructMapper.INSTANCE.toQueryResponse(sysRolePOList);
    }
}
